/** 
* @description:	转义及反转义html的特殊字符
* @author:	yanxiaoe 
* @example var str = ''; str.encodeHtml(); str.decodeHtml();
*/
define(['XOMS'], function(XOMS) {
	XOMS.String = function() {
		this.REGX_HTML_ENCODE = /"|&|'|<|>|[\x00-\x20]|[\x7F-\xFF]|[\u0100-\u2700]/g;
		this.REGX_HTML_DECODE = /&\w+;|&#(\d+);/g;
		this.HTML_DECODE = {
	        "&lt;" : "<", 
	        "&gt;" : ">", 
	        "&amp;" : "&", 
	        "&nbsp;": " ", 
	        "&quot;": "\"", 
	        "&copy;": ""
	    };
		this.encodeHtml = function(s){
			s = (s != undefined) ? s : this.toString();
	        return (typeof s != "string") ? s :
	            s.replace(this.REGX_HTML_ENCODE, 
	                      function($0){
	                          var c = $0.charCodeAt(0), r = ["&#"];
	                          c = (c == 0x20) ? 0xA0 : c;
	                          r.push(c);
	                          r.push(";");
	                          return r.join("");
	                      });
		};
		this.decodeHtml = function(s){
	        var HTML_DECODE = this.HTML_DECODE;

	        s = (s != undefined) ? s : this.toString();
	        return (typeof s != "string") ? s :
	            s.replace(this.REGX_HTML_DECODE,
	                      function($0, $1){
	                          var c = HTML_DECODE[$0];
	                          if(c == undefined){
	                              // Maybe is Entity Number
	                              if(!isNaN($1)){
	                                  c = String.fromCharCode(($1 == 160) ? 32:$1);
	                              }else{
	                                  c = $0;
	                              }
	                          }
	                          return c;
	                      });
	    };
	};
	
	// 将XOMS.String对象的所有属性添加到String的原型中
	XOMS.String.call(String.prototype);
	
	return XOMS;
});